package cn.tedu.knows.search.repository;

import cn.tedu.knows.search.VO.Item;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

// 添加表示当前接口是数据访问层的注解
@Repository
public interface ItemRepository extends ElasticsearchRepository<Item, Long> {
    // 和Mybatisplus框架继承的父接口类似,这里也继承个父接口
    // 继承父接口ElasticsearchRepository<[VO类型],[id类型]>的效果是
    // 自动生成基本的增删改查方法

    // 自定义查询方法
    // 方法名表达了要查询的操作,不是简单的规范了
    //          查询 Item的集合 by:通过       匹配title属性
    Iterable<Item> queryItemsByTitleMatches(String title);

    // 多条件查询
    Iterable<Item> queryItemsByTitleMatchesOrBrandMatches(String title, String brand);

    // 排序查询
    Iterable<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title, String brand);

    // 分页查询
    Page<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title, String brand, Pageable pageable);

}
